home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / IEditor / Generators / C_lib / Config.c next >
Encoding:
C/C++ Source or Header  |  1997-06-17  |  6.6 KB  |  241 lines

  1. /*
  2.     C source code created by Interface Editor
  3.     Copyright © 1994-1996 by Simone Tellini
  4.  
  5.     Generator:  C_IE_Mod.generator 37.0 (15.2.96)
  6.  
  7.     Copy registered to :  Simone Tellini
  8.     Serial Number      : #0
  9. */
  10.  
  11. #include <exec/types.h>
  12. #include <exec/nodes.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <libraries/gadtools.h>
  16. #include <clib/exec_protos.h>
  17. #include <clib/intuition_protos.h>
  18. #include <clib/gadtools_protos.h>
  19. #include <clib/graphics_protos.h>
  20. #ifdef PRAGMAS
  21. #include <pragmas/exec_pragmas.h>
  22. #include <pragmas/intuition_pragmas.h>
  23. #include <pragmas/graphics_pragmas.h>
  24. #include <pragmas/gadtools_pragmas.h>
  25. #endif
  26. #include <ctype.h>
  27. #include <string.h>
  28.  
  29. #include "DEV_IE:Include/IEditor.h"
  30.  
  31. #include "Config.h"
  32.  
  33.  
  34. UWORD ConfGTypes[] = {
  35.     CHECKBOX_KIND,
  36.     BUTTON_KIND,
  37.     BUTTON_KIND,
  38.     CHECKBOX_KIND,
  39.     CHECKBOX_KIND,
  40.     CHECKBOX_KIND,
  41.     CHECKBOX_KIND,
  42.     STRING_KIND,
  43.     NULL };
  44.  
  45. struct TextAttr topaz8_065 = {
  46.     (STRPTR)"topaz.font", 8, 0x0, 0x41 };
  47.  
  48. struct NewGadget ConfNGad[] = {
  49.     274, 3, 26, 11, "Clicked _Ptr", &topaz8_065, GD_Click, NULL, NULL, (APTR)ClickClicked,
  50.     6, 77, 152, 14, "_Ok", &topaz8_065, GD_Ok, NULL, NULL, (APTR)OkClicked,
  51.     160, 77, 152, 14, "_Cancel", &topaz8_065, GD_Canc, NULL, NULL, (APTR)CancClicked,
  52.     122, 15, 26, 11, "IDCMP _Handler", &topaz8_065, GD_Handler, NULL, NULL, (APTR)HandlerClicked,
  53.     274, 15, 26, 11, "_Key Handler", &topaz8_065, GD_KeyHandler, NULL, NULL, (APTR)KeyHandlerClicked,
  54.     122, 3, 26, 11, "_Template", &topaz8_065, GD_Template, NULL, NULL, (APTR)TemplateClicked,
  55.     122, 27, 26, 11, "To Lo_wer", &topaz8_065, GD_ToLower, NULL, NULL, (APTR)ToLowerClicked,
  56.     6, 57, 306, 14, "_UWORD chip:", &topaz8_065, GD_Chip, PLACETEXT_ABOVE, NULL, (APTR)ChipClicked
  57. };
  58.  
  59. ULONG ConfGTags[] = {
  60.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  61.     (GT_Underscore), '_', (TAG_DONE),
  62.     (GT_Underscore), '_', (TAG_DONE),
  63.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  64.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  65.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  66.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  67.     (GT_Underscore), '_', (GTST_MaxChars), 24, (TAG_DONE)
  68. };
  69.  
  70. UWORD ScaleX( UWORD FontX, UWORD value )
  71. {
  72.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  73. }
  74.  
  75. UWORD ScaleY( UWORD FontY, UWORD value )
  76. {
  77.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  78. }
  79.  
  80. void CloseWnd( struct Window **Wnd, struct Gadget **GList )
  81. {
  82.     if( *Wnd ) {
  83.         CloseWindow( *Wnd );
  84.         *Wnd = NULL;
  85.     }
  86.     if( GList ) {
  87.         FreeGadgets( *GList );
  88.         *GList = NULL;
  89.     }
  90. }
  91.  
  92. LONG OpenConfWindow( struct Window **Wnd, struct Gadget **GList, struct Gadget *Gadgets[], struct IE_Data *IE )
  93. {
  94.     LONG            ret_code = NULL;
  95.     UWORD           FontX, FontY;
  96.     struct TextAttr *Font;
  97.  
  98.     Font = IE->ScreenData->Screen->Font;
  99.     FontY = IE->ScreenData->Screen->RastPort.Font->tf_YSize;
  100.     FontX = IE->ScreenData->Screen->RastPort.Font->tf_XSize;
  101.  
  102.     if((( ScaleX( FontX, 319 ) + IE->ScreenData->Screen->WBorRight + IE->ScreenData->XOffset ) > IE->ScreenData->Screen->Width ) ||
  103.         (( ScaleY( FontY, 94 ) + IE->ScreenData->Screen->WBorBottom + IE->ScreenData->YOffset ) > IE->ScreenData->Screen->Height )) {
  104.             Font = &topaz8_065;
  105.             FontX = FontY = 8;
  106.         }
  107.  
  108.     struct Gadget           *g;
  109.     UWORD                   lc, tc;
  110.     struct NewGadget        ng;
  111.  
  112.     if(!( g = CreateContext( GList )))
  113.         return( 1L );
  114.  
  115.     for( lc = 0, tc = 0; lc < Conf_CNT; lc++ ) {
  116.  
  117.         CopyMem(( char * )&ConfNGad[ lc ], ( char * )&ng, ( long )sizeof( struct NewGadget ));
  118.         ng.ng_VisualInfo = IE->ScreenData->Visual;
  119.         ng.ng_TextAttr = Font;
  120.         ng.ng_LeftEdge = IE->ScreenData->XOffset + ScaleX( FontX, ng.ng_LeftEdge );
  121.         ng.ng_TopEdge  = IE->ScreenData->YOffset + ScaleY( FontY, ng.ng_TopEdge  );
  122.         ng.ng_Width    = ScaleX( FontX, ng.ng_Width  );
  123.         ng.ng_Height   = ScaleY( FontY, ng.ng_Height );
  124.         Gadgets[ lc ] = g = CreateGadgetA((ULONG)ConfGTypes[ lc ], g, &ng, (struct TagItem *)&ConfGTags[ tc ] );
  125.  
  126.         while( ConfGTags[ tc ] ) tc += 2;
  127.         tc++;
  128.  
  129.         if( !g )
  130.             return( 2L );
  131.     }
  132.  
  133.  
  134.     struct TagItem WTags[] = {
  135.         { WA_Left, 156 },
  136.         { WA_Top, 80 },
  137.         { WA_Width, ScaleX( FontX, 319 ) + IE->ScreenData->XOffset + IE->ScreenData->Screen->WBorRight },
  138.         { WA_Height, ScaleY( FontY, 94 ) + IE->ScreenData->YOffset + IE->ScreenData->Screen->WBorBottom },
  139.         { WA_MinWidth, 0 },
  140.         { WA_MaxWidth, -1 },
  141.         { WA_MinHeight, 0 },
  142.         { WA_MaxHeight, -1 },
  143.         { WA_PubScreen, IE->ScreenData->Screen },
  144.         { WA_Title, (ULONG)"C_IE_Mod.generator Config" },
  145.         { WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_RMBTRAP },
  146.         { WA_IDCMP, BUTTONIDCMP|CHECKBOXIDCMP|STRINGIDCMP|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|IDCMP_VANILLAKEY },
  147.         { WA_Gadgets, *GList },
  148.         { TAG_DONE, NULL }
  149.     };
  150.  
  151.     WTags[ WT_LEFT ].ti_Data = (IE->ScreenData->Screen->Width  - WTags[ WT_WIDTH  ].ti_Data) >> 1;
  152.     WTags[ WT_TOP  ].ti_Data = (IE->ScreenData->Screen->Height - WTags[ WT_HEIGHT ].ti_Data) >> 1;
  153.  
  154.     if(!( *Wnd = OpenWindowTagList( NULL, &WTags[0] )))
  155.         return( 4L );
  156.  
  157.     GT_RefreshWindow( *Wnd, NULL );
  158.     return( 0L );
  159. }
  160.  
  161. LONG HandleConfIDCMP( struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE )
  162. {
  163.     struct IntuiMessage     *m;
  164.     BOOL                    (*func)( struct Window *, struct Gadget **, struct IE_Data * );
  165.     BOOL                    running = TRUE;
  166.     int                     class;
  167.     short                   code;
  168.     struct Gadget   *gad;
  169.  
  170.     while( m = GT_GetIMsg( Wnd->UserPort )) {
  171.  
  172.         class = m->Class;
  173.         code  = m->Code;
  174.         gad   = (struct Gadget *)m->IAddress;
  175.  
  176.         GT_ReplyIMsg( m );
  177.  
  178.         switch( class ) {
  179.  
  180.             case    IDCMP_VANILLAKEY:
  181.                 running = HandleConfKeys( code, Wnd, Gadgets, IE );
  182.                 break;
  183.  
  184.             case    IDCMP_REFRESHWINDOW:
  185.                 GT_BeginRefresh( Wnd );
  186.                 GT_EndRefresh( Wnd, TRUE );
  187.                 break;
  188.  
  189.             case    IDCMP_GADGETUP:
  190.                 func = gad->UserData;
  191.                 running = (*func)( Wnd, Gadgets, IE );
  192.                 break;
  193.  
  194.         }
  195.     }
  196.     return( running );
  197. }
  198.  
  199. BOOL HandleConfKeys( UBYTE Code, struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE )
  200. {
  201.     BOOL running = TRUE;
  202.  
  203.     switch( tolower( Code )) {
  204.  
  205.         case    'p':
  206.             running = ClickKeyPressed( Wnd, Gadgets, IE );
  207.             break;
  208.  
  209.         case    'o':
  210.             running = OkKeyPressed( Wnd, Gadgets, IE );
  211.             break;
  212.  
  213.         case    'c':
  214.             running = CancKeyPressed( Wnd, Gadgets, IE );
  215.             break;
  216.  
  217.         case    'h':
  218.             running = HandlerKeyPressed( Wnd, Gadgets, IE );
  219.             break;
  220.  
  221.         case    'k':
  222.             running = KeyHandlerKeyPressed( Wnd, Gadgets, IE );
  223.             break;
  224.  
  225.         case    't':
  226.             running = TemplateKeyPressed( Wnd, Gadgets, IE );
  227.             break;
  228.  
  229.         case    'w':
  230.             running = ToLowerKeyPressed( Wnd, Gadgets, IE );
  231.             break;
  232.  
  233.         case    'u':
  234.             if(!( Gadgets[ GD_Chip ]->Flags & GFLG_DISABLED ))
  235.                 ActivateGadget( Gadgets[ GD_Chip ], Wnd, NULL );
  236.             break;
  237.  
  238.     }
  239.     return( running );
  240. }
  241.